<template>
  <div>
    <el-card>
      <div id="container"></div>
    </el-card>

    <!-- 显示坐标的对话框 -->
    <el-dialog v-model="dialogVisible" title="Tips" width="30%">
      <el-table :data="tableData" style="width: 100%">
        <el-table-column prop="lng" label="经度"></el-table-column>
        <el-table-column prop="lat" label="纬度"></el-table-column>
      </el-table>
    
    </el-dialog>
  </div>
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
import { shallowRef } from "@vue/reactivity";
import { ref, reactive } from "vue";
export default {
  name: "coordinates",
  setup(context, props) {
    const map = shallowRef(null);
    const dialogVisible = ref(false);
    // 存储坐标
    const lngLat = reactive({
      lng: null,
      lat: null,
    });
    // 显示坐标的数据
    const tableData =reactive([lngLat])
    return {
    tableData,
      lngLat,
      dialogVisible,
      map,
    };
  },
  methods: {
    initMap() {
      let instance = this;
      AMapLoader.load({
        key: "2b45c6a7655404e69a9b856504d8625c", // 申请好的Web端开发者Key，首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本，缺省时默认为 1.4.15
      })
        .then((AMap) => {
          this.map = new AMap.Map("container", {
            //设置地图容器id
            viewMode: "3D", //是否为3D地图模式
            zoom: 10, //初始化地图级别
            center: [105.602725, 37.076636], //初始化地图中心点位置
          });

           AMap.plugin(
            [
                 "AMap.ToolBar",
              "AMap.Geolocation",
            ],
            function () {
                // 在图面添加工具条控件，工具条控件集成了缩放、平移、定位等功能按钮在内的组合控件
              instance.map.addControl(new AMap.ToolBar());
              // 在图面添加定位控件，用来获取和展示用户主机所在的经纬度位置
              instance.map.addControl(new AMap.Geolocation());
            }
          );
          //   注册地图点击事件
          this.map.on("click", (e) => {
            // console.log(e);
            this.lngLat.lat = e.lnglat.lat;
            this.lngLat.lng = e.lnglat.lng;
            console.log(this.lngLat);
            this.dialogVisible = true;
          });
        })
        .catch((e) => {
          console.log(e);
        });
    },
  },
  activated() {
    this.initMap();
  },
  deactivated() {
    this.map.destroy();
  },
};
</script>

<style lang="less" scoped>
#container {
  width: calc(100vw - 200px);
  height: calc(100vh - 3rem);
  position: absolute;
  top: 3rem;
  left: 200px;
}
</style>
